/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package armazemseujose.model;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;

/**
 *
 * @author BRUNA
 */
public class listaEstoque {

    private ArrayList<Estoque> estoque = new ArrayList();
    private listaItens itens;

    public listaEstoque() throws FileNotFoundException {
        itens = new listaItens();
        lerArquivoEstoque();
    }

    public void lerArquivoEstoque() throws FileNotFoundException {
        Scanner scanner = new Scanner(new FileReader("estoque.txt"))
                .useDelimiter("\\||\\n");
        while (scanner.hasNext()) {
            String nome = scanner.next();
            String quantidade = scanner.next();
            String qtd = quantidade.substring(0, quantidade.length() - 1);
            int i = Integer.parseInt(qtd);
            Item item = getItens().procuraItem(nome);
            estoque.add(new Estoque(item, i));
        }
    }

    public void salvaArquivoEstoque() throws IOException {
        File dir = new File(".");
        File arq = new File(dir, "estoque.txt");
        FileWriter fileWriter = new FileWriter(arq, false);
        for (Estoque i : estoque) {
            PrintWriter printWriter = new PrintWriter(fileWriter);
            printWriter.println(i.getItem().getNome() + "|" + i.getQuantidade());
            printWriter.flush();
        }
    }

    public void alteraEstoque(int qtd, Item item) throws IOException {
        for (Estoque a : estoque) {
            if (a.getItem().getNome().equals(item.getNome())) {//se já existir o produto no estoque entra no if e altera a quantidade
                int q = a.getQuantidade() + qtd;
                a.setQuantidade(q);
                salvaArquivoEstoque();
                return;
            }
        }
        estoque.add(new Estoque(item, qtd));
        salvaArquivoEstoque();
    }

    public Estoque procuraItemEstoque(String nome) {
        for (Estoque i : estoque) {
            if (nome.equalsIgnoreCase(i.getItem().getNome())) {
                return i;
            }
        }
        return null;
    }

    /**
     * @return the estoque
     */
    public ArrayList<Estoque> getEstoque() {
        return estoque;
    }

    /**
     * @param estoque the estoque to set
     */
    public void setEstoque(ArrayList<Estoque> estoque) {
        this.estoque = estoque;
    }

    /**
     * @return the itens
     */
    public listaItens getItens() {
        return itens;
    }

    /**
     * @param itens the itens to set
     */
    public void setItens(listaItens itens) {
        this.itens = itens;
    }

}
